/**
 * 用于各类模型的定义：
 * 除了glm外，所有langchain支持的模型都可以使用
 */
const { BaseModelProvider } = require('../base/BaseModelProvider');
// 导入智谱AI的聊天模型
const { ChatZhipuAI } = require('@langchain/community/chat_models/zhipuai');

class GlmModelProvider extends BaseModelProvider {
  /**
   *  异步创建模型方法
   * @returns
   */
  async createModel() {
    // 设置智谱AI的API密钥
    const aiKey = 'de333d5ce4b5ec2dfd301ce106487b20.WXPFddvxAS5S4Bx4';
    // 设置模型名称
    const model_name = 'glm-4';

    // 使用 ChatZhipuAI 类创建模型实例
    const model = new ChatZhipuAI({
      apiKey: aiKey,
      model: model_name,
      // 设置温度参数，用于控制模型的随机性，取值范围为 0 到 1，建议不要使用 1.0，因为有些模型不支持
      temperature: 0.95,
      // 设置最大重试次数，如果请求失败，会尝试重试最多 3 次
      maxRetries: 3,
      // 设置是否显示详细日志，true 表示显示
      verbose: true,
    });

    return model;
  }
}

module.exports = {
  GlmModelProvider,
};
